package main // 注意这里是 package main 而不是 package cmd

import (
	"fmt"
	"log"
	_ "oa-system/docs"
	"oa-system/internal/config"
	"oa-system/internal/database"
	"oa-system/internal/router"
	"oa-system/pkg/logger"

	"github.com/gin-gonic/gin"
)

// @title OA System API
// @version 1.0
// @description OA系统后端API文档
// @host localhost:8080
// @BasePath /api/v1
// @securityDefinitions.apikey Bearer
// @in header
// @name Authorization
func main() {
	// 1. 初始化配置
	if err := config.Init(); err != nil {
		log.Fatalf("配置初始化失败: %v", err)
	}

	// 2. 初始化日志
	if err := logger.Init(); err != nil {
		log.Fatalf("日志初始化失败: %v", err)
	}

	// 3. 设置gin模式
	gin.SetMode(config.GlobalConfig.App.Mode)

	// 4. 初始化数据库连接
	if err := database.InitDB(); err != nil {
		log.Fatalf("数据库初始化失败: %v", err)
	}
	defer database.CloseDB()

	// 5. 初始化Redis连接
	// if err := database.InitRedis(); err != nil {
	// 	log.Fatalf("Redis初始化失败: %v", err)
	// }
	// defer database.CloseRedis()

	// 6. 初始化路由
	r := router.InitRouter()

	// 7. 启动服务
	addr := fmt.Sprintf(":%d", config.GlobalConfig.App.Port)
	log.Printf("服务启动在 http://localhost%s", addr)
	if err := r.Run(addr); err != nil {
		log.Fatalf("服务启动失败: %v", err)
	}
}
